Due to advances in computing technology, businesses today are able to operate more efficiently when compared to substantially similar businesses only a few years ago. For example, high speed data networks enable employees of a company to communicate instantaneously by email, quickly transfer data files to disparate employees, manipulate data files, share data relevant to a project to reduce duplications in work product, etc. Furthermore, advancements in technology have enabled factory applications to become partially or completely automated. For instance, activities that once required workers to put themselves proximate to heavy machinery and other various hazardous conditions can now be completed at a safe distance therefrom.
Further, imperfections associated with human action have been minimized through employment of highly precise machines. Many of these factory devices supply data related to manufacturing to databases (or web services referencing databases) that are accessible by system/process/project managers on a factory floor. For instance, sensors and associated software can detect a number of instances that a particular machine has completed an operation given a defined amount of time. Further, data from sensors can be delivered to a processing unit related to system alarms. Thus, a factory automation system can review collected data and automatically and/or semi-automatically schedule maintenance of a device, replacement of a device, and other various procedures that relate to automating a process.
Automatically performing actions based upon changes in data (e.g., changes in process variables, alterations of an operator-related parameter, . . . ) is often computationally expensive and non-trivial. In an example, devices that alter their behavior based upon data changes in a system typically poll several sources of data to monitor for such data changes. For instance, many industrial controllers can control one or more processes through use of ladder logic, wherein each ladder logic program can include thousands of rungs. When a device polls the ladder logic for alterations with respect to particular portions of data, each rung of the ladder logic is scanned sequentially. Data flow architectures that utilize polling in such a manner are predictable and easy to control, but are associated with a significant amount of overhead. For example, if a ladder logic program is quite large and several devices must poll each rung of the ladder logic program, a significant amount of computational resources will be required to effectuate the polling.
In other systems, software can be “wired up” in such a manner that data changes cause data packets to be pushed to consuming devices. Thus, if a process variable that effects operation of a device is altered (e.g., through an operator depressing a push button), a flag, data, or other suitable notification can be automatically provided to the device. These architectures can be problematic when complex control is desirably implemented, such as when signals are combined or feedback is involved. For instance, if one data path is faster than another, then a transient state can exist. Further, if feedback is employed, then altered data can drive itself into an infinite loop, such that other data changes cannot propagate throughout a system.